﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Neo4JConnector.Semantic
{
    public interface IEmbeddingService
    {
        /// <summary>
        /// 生成文本的嵌入向量
        /// </summary>
        /// <param name="text">输入文本</param>
        /// <returns>嵌入向量</returns>
        Task<float[]> GenerateEmbeddingAsync(string text);

        /// <summary>
        /// 生成图像的嵌入向量
        /// </summary>
        /// <param name="imageData">图像字节数据</param>
        /// <returns>嵌入向量</returns>
        Task<float[]> GenerateImageEmbeddingAsync(byte[] imageData);

        /// <summary>
        /// 批量生成文本嵌入向量
        /// </summary>
        /// <param name="texts">文本列表</param>
        /// <returns>嵌入向量列表</returns>
        Task<float[][]> BulkGenerateEmbeddingsAsync(IEnumerable<string> texts);

        /// <summary>
        /// 获取嵌入向量的维度
        /// </summary>
        int EmbeddingDimension { get; }
    }
}
